// 封装购物车相关的API

import request from '@/utils/request'

/**
 * 获取商品的 最新价格 库存 是否有效
 * @param skuId {String}
 * @returns {*|AxiosPromise}
 */
export const getNewCartGoods = (skuId) => {
  return request(`/goods/stock/${skuId}`, 'get')
}

/**
 * 获取商品对应的sku数据
 * @param skuId {String}
 * @returns {*|AxiosPromise}
 */
export const getGoodsSku = (skuId) => {
  return request(`/goods/sku/${skuId}`, 'get')
}

/**
 * 合并购物车
 * @param cartList {Array<object>}
 * @param object.skuId {String} skuId
 * @param object.selected {Boolean} 选中状态
 * @param object.count {Number} 数量
 * @returns {*|AxiosPromise}
 */
export const mergeCart = (cartList) => {
  return request('/member/cart/merge', 'post', cartList)
}

/**
 * 获取购物车商品列表
 * @returns {*|AxiosPromise}
 */
export const findCartList = () => {
  return request('/member/cart', 'get')
}
/**
 *  加入购物车
 * @param skuId {String}
 * @param count {Number}
 * @returns {*|AxiosPromise}
 */
export const insertCart = ({
  skuId,
  count
}) => {
  return request('/member/cart', 'post', {
    skuId,
    count
  })
}

/**
 * 删除购物车商品，支持批量删除
 * @param ids {Array<String>}
 * @returns {*|AxiosPromise}
 */
export const deleteCart = (ids) => {
  return request('/member/cart', 'DELETE', { ids })
}

/**
 * 更新购物车（支持修改选中状态和数量）
 * @param skuId
 * @param selected 选中状态修改
 * @param count 购物车数量修改
 * @returns {*|AxiosPromise}
 */
export const updateCart = ({
  skuId,
  selected,
  count
}) => {
  return request(`/member/cart/${skuId}`, 'PUT', {
    selected,
    count
  })
}

/**
 * 购物车全选/取消全选
 * ids参数如果不传，表示用户访问的是全选和取消全选操作，后端根据selected确定用户是全选和取消全选
 * @param selected {Boolean} 是否选中
 * @param ids {Array<String>} skuId集合
 * @returns {*|AxiosPromise}
 */
export const checkAllCart = ({
  selected,
  ids
}) => {
  console.log(selected, ids)
  return request('/member/cart/selected', 'PUT', {
    selected,
    ids
  })
}
